winsafe\user\handles/
hicon.rs1#![allow(non_camel_case_types, non_snake_case)]
2
3use crate::decl::*;
4use crate::guard::*;
5use crate::kernel::privs::*;
6use crate::user::ffi;
7
8handle! { HICON;
9 }
12
13impl HICON {
14 #[must_use]
17 pub fn CopyIcon(&self) -> SysResult<DestroyIconGuard> {
18 unsafe {
19 ptr_to_sysresult_handle(ffi::CopyIcon(self.ptr())).map(|h| DestroyIconGuard::new(h))
20 }
21 }
22
23 #[must_use]
26 pub fn GetIconInfo(&self) -> SysResult<ICONINFO> {
27 let mut ii = ICONINFO::default();
28 bool_to_sysresult(unsafe { ffi::GetIconInfo(self.ptr(), pvoid(&mut ii)) }).map(|_| ii)
29 }
30
31 pub fn GetIconInfoEx(&self, icon_info: &mut ICONINFOEX) -> SysResult<()> {
34 bool_to_sysresult(unsafe { ffi::GetIconInfoExW(self.ptr(), pvoid(icon_info)) })
35 }
36}